package com.zsj.arithmetic.BlueBridgeCupCExam;

import java.util.Random;

/**
 * D：骰子游戏
 *
 *我们来玩一个游戏。
 *同时掷出3个普通骰子（6个面上的数字分别是1~6）。
 *如果其中一个骰子上的数字等于另外两个的和，你就赢了。
 *下面的程序计算出你能获胜的精确概率（以既约分数表示）
 *
 * 我看半天看到这是个填空题！！！
 *
 * 写不出来，只能参考代码，看看大佬怎么写的
 */
public class NumberFourExam {
    public static void main(String[] args){
        int n = 0;
        for(int i=0; i<6; i++)//1-6
            for(int j=0; j<6; j++)//1-6
                for(int k=0; k<6; k++){
                    if(i+j+1==k || i+k+1==j || j+k+1==i)
                            n++;//出现次数 + 1
                }
            //System.out.println(n);//45
        int m = gcd(n,6*6*6);//这里返回9，下面的gcd方法自己debug看一下
        //m=9,n=45
        System.out.println(n/m + "/" + 6*6*6/m);//5/24
    }

    /**
     * 用来计算分子的方法
     * @param a 出现次数
     * @param b 6的骰子个数次方
     * @return 如果骰子的点数为0，直接返回a
     * 如果正常 就返回方法参数，b=216,a=45
     * 也就是这里的俩个值第一个是216，第二个是45%216=45
     * 一直返回参数直到第二个数值为0时，才返回这个a值，最终是9
     */
    public static int gcd(int a, int b) {
        if(b==0) return a;
        return gcd(b,a%b);
    }
}
